package com.shaofei.weituohedaili

/**
 *${DESCRIPTION} -- 这个没作用，所以在class里面自定义了
 * Created by apk2sf on 2017/12/16.
 * email: apk2sf@163.com
 * QQ：337081267
 */
/*
* 委托和代理
*
* 委托---
*
* 类1 和 类2 都实现一个接口，但是类1 不想实现其中的方法 可以委托类2来实现这个方法
*
* 类1 的声明为下：使用by关键字
* class WashFaDemo1 : IWashDemo by WashZiDemo2()
*
* 如果除了类2中的实现逻辑还有其他的逻辑可以这样书写
*
* 在类1 中实现接口中的方法，然后进行调用类2 中的方法
*    override fun wash() {

        println("父亲 实现 pro")

        WashZiDemo2().wash()

        println("父亲实现 end")

    }

    类1委托类2
    类2代理类1
* */

fun main(args: Array<String>) {
    var zi = WashZiDemo2()
    zi.wash()

    var fu = WashFaDemo1()
    fu.wash()
}